#ifndef RECORD_H_
#define RECORD_H_
#include <string>
#include <vector>
#include "ColumnSet.h"
#include "Record.h"
#include "Value.h"

using std::string;
using std::vector;

namespace duomai {
    namespace im {
        class Record
        {
            public:
                Record (ColumnSet* pColumnSet);
                virtual ~Record ();
                int getColumnCount() const;
                const string toString();
                const string toSQL();
                const string toSQLInsert(string table_name);
                const string toSQLUpdate(string table_name, string where_condition);
                void put(string key, string value);
                void put(string key, int64_t value);
                void put(string key, double value);
                Column* getColumnByName(string column_name);
                Value* getValue(int column_index);
                Value* getValue(string column_name);

            private:
                ColumnSet* m_pColumnSet;
                vector<Value> m_Values;
                int column_count_;
        };
    } /* im */ 

} /* duomai  */ 
#endif /* end of include guard: RECORD_H_ */
